package com.google.code.lf.gfm.model.rules;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

import com.google.code.lf.commons.util.ToStringHelper;
import com.google.code.lf.gfm.model.grisbi.categorie.Categorie;
import com.google.code.lf.gfm.model.grisbi.categorie.SousCategorie;
import com.google.code.lf.gfm.model.grisbi.tiers.Tiers;

/**
 * Bean représentant une entrée à traiter dans la règle associée.
 * <br/>Chaque entrée se caractérise par:
 * <ul><li>Le nom du tiers de référence ({@link #getNomTiersRef()}),
 * <li>Le pattern de recherche ({@link #getPatternTiers()}),
 * <li>Le nom de la catégorie à utiliser pour ce tiers ({@link #getNomCategorieRef()}),
 * <li>Le nom de la sous-catégorie à utiliser pour ce tiers ({@link #getNomSousCategorieRef()}).</ul>
 * <br/>Le binding bean/xml utilise <a href="https://jaxb.dev.java.net/">JAXB</a>.
 * 
 * @author gael.lorent-fonfrede
 * 
 * @see GrisbiAfterFileImportParamFile.
 */
@XmlRootElement(name="GrisbiAfterFileImportInput")
@XmlAccessorType(XmlAccessType.NONE)
public class GrisbiAfterFileImportInput {
	/** Le nom du {@link Tiers} de réference à utiliser. */
	@XmlElement
	private String nomTiersRef;

	/** Le pattern de recherche de {@link Tiers}. */
	@XmlElement
	private String patternTiers;

	/** Le nom de la {@link Categorie} de réference à utiliser. */
	@XmlElement
	private String nomCategorieRef;

	/** Le nom de la {@link SousCategorie} de référence à utiliser. */
	@XmlElement
	private String nomSousCategorieRef;

	/**
	 * Constructeur vide (nécessaire pour JAXB).
	 */
	public GrisbiAfterFileImportInput() {
	}

	/**
	 * Constructeur.
	 * 
	 * @param nomTiersRef Le nom du {@link Tiers} de réference à utiliser.
	 * @param patternTiers Le pattern de recherche de {@link Tiers}.
	 * @param nomCategorieRef Le nom de la {@link Categorie} de réference à utiliser.
	 * @param nomSousCategorieRef Le nom de la {@link SousCategorie} de référence à utiliser.
	 */
	public GrisbiAfterFileImportInput(final String nomTiersRef, final String patternTiers, final String nomCategorieRef, final String nomSousCategorieRef) {
		this.nomTiersRef = nomTiersRef;
		this.patternTiers = patternTiers;
		this.nomCategorieRef = nomCategorieRef;
		this.nomSousCategorieRef = nomSousCategorieRef;
	}

	/* (non-Javadoc)
	 * @see java.lang.Object#toString()
	 */
	@Override
	public String toString() {
		return ToStringHelper.toString(this);
	}

	// -- Getters / Setters

	/**
	 * @return {@link #nomCategorieRef}.
	 */
	public String getNomTiersRef() {
		return nomTiersRef;
	}
	/**
	 * @return {@link #patternTiers}.
	 */
	public String getPatternTiers() {
		return patternTiers;
	}
	/**
	 * @return {@link #nomCategorieRef}.
	 */
	public String getNomCategorieRef() {
		return nomCategorieRef;
	}
	/**
	 * @return {@link #nomSousCategorieRef}.
	 */
	public String getNomSousCategorieRef() {
		return nomSousCategorieRef;
	}
}
